package cn.lg.soar.common.util;

import cn.lg.soar.common.util.reflect.ReflectUtil;
import org.springframework.util.CollectionUtils;

import java.util.Map;

/**
 * @author luguoxiang
 * @date 2022/5/30
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface UrlUtils {

    /**
     * 处理url参数
     * @param params
     * @return
     */
    static String handlerParams(Object params) {
        if (params == null) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        ReflectUtil.scanField(params.getClass(), field -> {
            sb.append(field.getName())
                    .append('=')
                    .append(ReflectUtil.get(params, field))
                    .append('&');
        });
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }

    /**
     * 处理url参数
     * @param params
     * @return
     */
    static String handlerParams(Map<String, ?> params) {
        if (CollectionUtils.isEmpty(params)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        params.forEach((name, value) -> {
            sb.append(name)
                    .append('=')
                    .append(value)
                    .append('&');
        });
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }

    /**
     * 处理url参数
     * @param url
     * @param params
     * @return
     */
    static String handlerParams(String url, Object params) {
        if (params == null) {
            return url;
        }
        return url + (url.contains("?") ? '&' : '?') + handlerParams(params);
    }

    /**
     * 处理url参数
     * @param url
     * @param params
     * @return
     */
    static String handlerParams(String url, Map<String, ?> params) {
        if (CollectionUtils.isEmpty(params)) {
            return url;
        }
        return url + (url.contains("?") ? '&' : '?') + handlerParams(params);
    }

}
